$(function () {
    // 需求1:初始化文章分类列表
    // 因为添加，修改，删除后都要重新渲染页面，所以封装成函数!
    // 调用函数
    let layer = layui.layer;
    initArtCateList();
    // 封装
    function initArtCateList() {
        axios({
            method: 'GET',
            url: '/my/article/cates'
        }).then(res => {
            // console.log(res);
            if (res.data.status !== 0) {
                return layer.msg(res.data.message);
            }
            // 成功后直接渲染
            let arr = [];
            // 遍历返回的数据
            res.data.data.forEach(function (ele) {
                if (ele.Id < 0) return;
                arr.push(`
                <tr>
                        <td>${ele.Id}</td>
                        <td>${ele.name}</td>
                        <td>${ele.alias}</td>
                        <td>
                            <button data-id="${ele.Id}" class="btn-edit layui-btn layui-btn-xs">编辑</button>
                            <button data-id="${ele.Id}" class="del-edit layui-btn layui-btn-xs layui-btn-danger">删除</button>
                        </td>
                    </tr>
                `);
            });
            // 循环之外，进行赋值
            $("tbody").empty().html(arr.join(""));
        });
    }

    // 需求2: 点击按钮，弹出添加类别对话框
    // 定义一个全局变量，接收open()的索引值，将来用于关闭对话框
    let indexAdd = 0;
    $("#addBtn").on('click', function () {
        // layui官网中 内置模块-弹出层-open()-各种属性配置完成的！
        indexAdd = layer.open({
            type: 1,
            title: '添加文章类别',
            area: ['500px', '260px'],
            // 将来，content里面要放form表单，所以放到最末尾
            content: `
            <form id="addForm" class="layui-form" action="">
                <div class="layui-form-item">
                    <label class="layui-form-label">分类名称</label>
                    <div class="layui-input-block">
                    <input type="text" name="name" required  lay-verify="required" placeholder="请输入标题" autocomplete="off" class="layui-input">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">分类别名</label>
                    <div class="layui-input-block">
                    <input type="text" name="alias" required  lay-verify="required" placeholder="请输入标题" autocomplete="off" class="layui-input">
                    </div>
                </div>
                <div class="layui-form-item">
                    <div class="layui-input-block">
                        <button class="layui-btn" lay-submit lay-filter="formDemo">确认添加</button>
                        <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                    </div>
                </div>
                </form>
            `
        });
    })

    // 需求3: 添加文章分类 - 后添加的动态元素，需要使用事件委托！！！
    $("body").on('submit', "#addForm", function (e) {
        e.preventDefault();
        // alert(111);
        // 添加分类
        axios({
            method: 'POST',
            url: '/my/article/addcates',
            data: $(this).serialize()
        }).then(res => {
            // console.log(res);
            if (res.data.status !== 0) {
                return layer.msg(res.data.message);
            }
            // 成功: 提示，初始化文章分类
            layer.msg("恭喜你，添加文章类别成功!");
            initArtCateList();
            // 关闭对话框
            layer.close(indexAdd);
        })
    })

    // 需求4: 修改分类弹出层
    let indexEdit = 0;
    $("tbody").on('click', ".btn-edit", function () {
        // 点击编辑按钮做两件事儿，1.弹出层;
        indexEdit = layer.open({
            type: 1,
            title: '修改文章类别',
            area: ['500px', '260px'],
            // 将来，content里面要放form表单，所以放到最末尾
            content: `
            <form id="editForm" class="layui-form" action="" lay-filter="editForm">

                    <!-- 隐藏域，填充Id值，将来修改数据的时候使用 -->
                    <input type="hidden" name="Id">
                <div class="layui-form-item">
                    <label class="layui-form-label">分类名称</label>
                    <div class="layui-input-block">
                    <input type="text" name="name" required  lay-verify="required" placeholder="请输入标题" autocomplete="off" class="layui-input">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">分类别名</label>
                    <div class="layui-input-block">
                    <input type="text" name="alias" required  lay-verify="required" placeholder="请输入标题" autocomplete="off" class="layui-input">
                    </div>
                </div>
                <div class="layui-form-item">
                    <div class="layui-input-block">
                        <button class="layui-btn" lay-submit lay-filter="formDemo">确认修改</button>
                    </div>
                </div>
                </form>
            `
        });
        // 点击编辑按钮做两件事儿，2.赋值;
        // (获取数据，和渲染数据，要写到.btn-edit的点击事件里面)
        let id = $(this).attr('data-id');
        // alert(id);
        // 发送ajax
        axios({
            method: 'GET',
            // /:id 动态参数(路由参数)
            // 特点： / 不能省略， : 一定要去掉， id是动态变化的;
            url: '/my/article/cates/' + id
        }).then(res => {
            // console.log(res);
            if (res.data.status !== 0) {
                return layer.msg(res.data.message);
            }
            // 成功后渲染： layui.form.val();
            layui.form.val("editForm", res.data.data);
        })
    })

    // 需求5: 修改文章分类
    $("body").on('submit', "#editForm", function (e) {
        e.preventDefault();
        // alert(111);
        // 修改分类
        axios({
            method: 'POST',
            url: '/my/article/updatecate',
            data: $(this).serialize()
        }).then(res => {
            // console.log(res);
            if (res.data.status !== 0) {
                return layer.msg(res.data.message);
            }
            // 成功: 提示，初始化文章分类
            layer.msg("恭喜你，修改文章类别成功!");
            initArtCateList();
            // 关闭对话框
            layer.close(indexEdit);
        })
    })

    // 需求6:删除
    $("tbody").on('click', '.del-edit', function () {
        // 获取自定义属性值
        let id = $(this).attr("data-id");
        // alert(id);
        // 弹框
        layer.confirm('确认删除吗？', { icon: 3, title: '提示' }, function (index) {
            // 发送ajax
            axios({
                //  / 必须保留 : 必须删除
                url: '/my/article/deletecate/' + id
            }).then(res => {
                // console.log(res);
                if (res.data.status !== 0) {
                    return layer.msg(res.data.message);
                }
                // 成功：提示，初始化文章分类列表！
                layer.msg("恭喜你，删除文章类别成功!");
                initArtCateList();
            });
            // 关闭询问框
            layer.close(index);
        })
    })
});